home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 25 / CU Amiga Magazine's Super CD-ROM 25 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-08].iso / CUCD / Programming / GMS / GMSDev / Source / C / Blitter / PixelList.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-05-18  |  2.8 KB  |  90 lines

  1. /* Name:   Pixel-List Demo
  2. ** Author: Paul Manias
  3. */
  4.  
  5. #include <proto/dpkernel.h>
  6.  
  7. BYTE *ProgName      = "Pixel-List Demo";
  8. BYTE *ProgAuthor    = "Paul Manias";
  9. BYTE *ProgDate      = "January 1998";
  10. BYTE *ProgCopyright = "DreamWorld Productions (c) 1996-1998.  Freely distributable.";
  11. BYTE *ProgShort     = "Demonstration of pixel lists.";
  12.  
  13. #define AMT_PIXELS 32
  14.  
  15. LONG Palette[] = {
  16.   PALETTE_ARRAY,32,
  17.   0x000000L,0x101010L,0x171717L,0x202020L,0x272727L,0x303030L,0x373737L,0x404040L,
  18.   0x474747L,0x505050L,0x575757L,0x606060L,0x676767L,0x707070L,0x777777L,0x808080L,
  19.   0x878787L,0x909090L,0x979797L,0xa0a0a0L,0xa7a7a7L,0xb0b0b0L,0xb7b7b7L,0xc0c0c0L,
  20.   0xc7c7c7L,0xd0d0d0L,0xd7d7d7L,0xe0e0e0L,0xe0e0e0L,0xf0f0f0L,0xf7f7f7L,0xffffffL
  21. };
  22.  
  23. struct PixelEntry Pixels[AMT_PIXELS] = {
  24.   {160,128,0},  {160,128,1},  {160,128,2},  {160,128,3},  {160,128,4},  {160,128,5},
  25.   {160,128,6},  {160,128,7},  {160,128,8},  {160,128,9},  {160,128,10}, {160,128,11},
  26.   {160,128,12}, {160,128,13}, {160,128,14}, {160,128,15}, {160,128,16}, {160,128,17},
  27.   {160,128,18}, {160,128,19}, {160,128,20}, {160,128,21}, {160,128,22}, {160,128,23},
  28.   {160,128,24}, {160,128,25}, {160,128,26}, {160,128,27}, {160,128,28}, {160,128,29},
  29.   {160,128,30}, {160,128,31}
  30. };
  31.  
  32. struct PixelList PixelList = {
  33.   AMT_PIXELS,
  34.   sizeof(struct PixelEntry),
  35.   Pixels
  36. };
  37.  
  38. struct GScreen *Screen;
  39.  
  40. /*=========================================================================*/
  41.  
  42. void main(void)
  43. {
  44.   WORD i;
  45.   struct JoyData *joy;
  46.  
  47.   if (Screen = InitTags(NULL,
  48.        TAGS_SCREEN,    NULL,
  49.        GSA_Attrib,     SCR_DBLBUFFER,
  50.          GSA_BitmapTags, NULL,
  51.          BMA_Palette,    Palette,
  52.          TAGEND,         NULL,
  53.        TAGEND)) {
  54.  
  55.     if (joy = Init(Get(ID_JOYDATA),NULL)) {
  56.        Show(Screen);
  57.  
  58.        do {
  59.          Clear(Screen->Bitmap);
  60.  
  61.          for(i=0; i<(AMT_PIXELS-1); i++) {
  62.            Pixels[i].YCoord += 1;            /* Y Coord down 1 */
  63.            if ((Pixels[i].Colour -= 1) < 0)  /* Colour value down 1 */
  64.              Pixels[i].Colour = 1;
  65.          }
  66.  
  67.          Query(joy);
  68.          Pixels[AMT_PIXELS-1].XCoord += joy->XChange+(FastRandom(3)-1);
  69.          Pixels[AMT_PIXELS-1].YCoord += joy->YChange+(FastRandom(3)-1);
  70.  
  71.          if (Pixels[AMT_PIXELS-1].XCoord >= Screen->Width)  Pixels[AMT_PIXELS-1].XCoord = 0;
  72.          if (Pixels[AMT_PIXELS-1].YCoord >= Screen->Height) Pixels[AMT_PIXELS-1].YCoord = 0;
  73.          if (Pixels[AMT_PIXELS-1].XCoord < 0) Pixels[AMT_PIXELS-1].XCoord = Screen->Width-1;
  74.          if (Pixels[AMT_PIXELS-1].YCoord < 0) Pixels[AMT_PIXELS-1].YCoord = Screen->Height-1;
  75.  
  76.          for(i=0; i<(AMT_PIXELS-1); i++)
  77.            Pixels[i] = Pixels[i+1];
  78.  
  79.          DrawPixelList(Screen->Bitmap,&PixelList);
  80.          WaitAVBL();
  81.          SwapBuffers(Screen);
  82.        } while (!(joy->Buttons & JD_LMB));
  83.  
  84.     Free(joy);
  85.     }
  86.   Free(Screen);
  87.   }
  88. }
  89.  
  90.